//package com.yx.changdao.web.controller;
//
//import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
//import com.yx.changdao.common.annotation.AutoLog;
//import com.yx.changdao.common.annotation.ShiroDesc;
//import com.yx.changdao.common.data.Result;
//import com.yx.changdao.common.entity.SysRole;
//import com.yx.changdao.common.entity.SysUserRole;
//import com.yx.changdao.common.exception.AlertException;
//import com.yx.changdao.common.utils.SysUtils;
//import com.yx.changdao.service.SysRoleService;
//import com.yx.changdao.service.SysUserRoleService;
//import org.apache.shiro.authz.annotation.RequiresPermissions;
//import org.hibernate.validator.constraints.Length;
//import org.springframework.web.bind.annotation.*;
//
//import javax.validation.Valid;
//
///**
// * @Description: <br />
// * 角色接口 todo 角色相关接口在 SysPermissionSetController 中
// * <p>
// * <br />
// * @Auther: Zhangjiashun
// * @create 2019/11/18 13:28
// */
//@RestController
//@RequestMapping(value = "/sys/role", produces = {"application/json;charset=UTF-8"})
//public class SysRoleController {
//
//    private final SysRoleService sysRoleService;
//    private final SysUserRoleService sysUserRoleService;
//
//    public SysRoleController(SysRoleService sysRoleService, SysUserRoleService sysUserRoleService) {
//        this.sysRoleService = sysRoleService;
//        this.sysUserRoleService = sysUserRoleService;
//    }
//
//    /**
//     * 角色列表
//     *
//     * @return Result
//     */
//    @AutoLog
//    @GetMapping("/list")
//    @RequiresPermissions("sys:role:list")
//    @ShiroDesc("系统角色:列表")
//    public Result list() throws AlertException {
//        return Result.ok().data(this.sysRoleService.list(SysUtils.autoCnd(SysRole.class)));
//    }
//
//
//    /**
//     * 添加角色
//     *
//     * @param role 待添加角色
//     * @return Result
//     */
//    @AutoLog
//    @PostMapping
//    @RequiresPermissions("sys:role:add")
//    @ShiroDesc("系统角色:添加")
//    public Result add(@Valid SysRole role) throws AlertException {
//        SysRole sysRole = this.sysRoleService.addRole(role);
//
//        if (sysRole == null) {
//            throw new AlertException("角色添加失败");
//        }
//
//        return Result.ok("角色添加成功");
//    }
//
//    /**
//     * 获得指定id 角色信息。
//     *
//     * @param roleId 角色id
//     * @return Result
//     */
//    @AutoLog
//    @GetMapping("/{id}")
//    @RequiresPermissions("sys:role:look")
//    @ShiroDesc("系统角色:查看")
//    public Result get(@PathVariable("id")
//                      @Length(min = 1, max = 32, message = "角色id只能在1~32位之间") String roleId) throws AlertException {
//        SysRole role = this.sysRoleService.getRole(roleId);
//        if (role == null) {
//            throw new AlertException("未找到相关角色信息");
//        }
//        return Result.ok().data(role);
//    }
//
//    /**
//     * 更新角色
//     *
//     * @param role 需要更新的角色。
//     * @return Result
//     */
//    @AutoLog
//    @PutMapping
//    @RequiresPermissions("sys:role:save")
//    @ShiroDesc("系统角色:保存")
//    public Result update(@Valid SysRole role) throws AlertException {
//        boolean b = this.sysRoleService.updateRole(role);
//        if (!b) {
//            throw new AlertException("角色更新失败");
//        }
//        return Result.ok("角色更新成功");
//    }
//
//    /**
//     * 删除角色
//     *
//     * @param roleId 待删除角色id
//     * @return Result
//     */
//    @AutoLog
//    @DeleteMapping("/{id}")
//    @RequiresPermissions("sys:role:del")
//    @ShiroDesc("系统角色:删除")
//    public Result delete(@PathVariable("id")
//                         @Length(min = 1, max = 32, message = "角色id只能在1~32位之间") String roleId) throws AlertException {
//        if (0 < this.sysUserRoleService.count(
//                new QueryWrapper<SysUserRole>().lambda().eq(SysUserRole::getRoleId, roleId))) {
//            throw new AlertException(String.format("角色[%s]已被使用，不可删除", roleId));
//        }
//
//        // 删除角色和他所有权限。
//        Boolean b = this.sysRoleService.delRole(roleId);
//
//        if (!b) {
//            throw new AlertException("角色删除失败");
//        }
//        return Result.ok("删除角色成功");
//    }
//
//}
